跳到主要内容

附录

对一些备份与恢复错误进行故障诊断

该附录列出备份或恢复期间您可能接收到的一些错误和参考消息,描述在什么情况下可能会发生这些错误或者可能会出现这些消息,并提供了可能的解决方案或变通方法。

通过查看 onbar 活动日志来查找错误

如果使用 onbar -b 备份存储空间或使用 onbar -r 恢复存储空间时发生错误,那么数据库服务器不会在标准输出 (stdout) 中显示错误。因此,使用 onbar -b 或 onbar -r 时,您必须检查 onbar 活动日志 (bar_act_log) 中的信息。onbar 备份与恢复数据时,它会将进度消息、警告和错误消息写入到 bar_act.log。

归档期间页面毁坏

消息 Archive detects that page is corrupt 指示页面验证失败。如果收到该消息,您可以确定具有毁坏页面的表。

在归档期间,数据库服务器将每页写入归档设备之前将对其进行验证。该验证将检查页上的元素是否与期望值一致。对某页的这种验证失败时,与以下类似的消息将写入 online.log 文件:

16:27:49 提出警告:归档检测到页面 1:10164 已毁坏。
16:27:49 人员:会话(5、gbasedbt@cronus、23467、10a921048)
线程(40、arcbackup1、10a8e8ae8、1)
文件:rsarcbu.c 行:2915
16:27:49 pid 23358 的堆栈跟踪已写入 /tmp/af.41043f4
16:27:49 另请参阅:/tmp/af.41043f4
16:27:49 归档检测到页面 1:10164 已毁坏。
16:27:50 rootdbs 的归档已完成,同时检测到 1 个受损页面。

检测到 10 个毁坏的页面后,归档停止。online.log 文件将显示详尽的错误消息,其中包括前 10 个错误的页地址。随后,只将毁坏页的计数放入online.log 中。

您接收到此消息后,通过检查 oncheck –pe 命令的输出来确定毁坏页属于哪个表。要确定毁坏的范围,对该表执行 oncheck –cID 命令。

毁坏页被保存到备份介质上。在恢复期间,毁坏页以其毁坏的格式返回。毁坏页恢复时不会向 online.log 写入错误消息,只有当归档时才写入。

已在运行的日志备份

使用 onbar 创建备份时,bar_act.log 文件中的参考消息 log backup is already running 以及 online.log 文件中的参考消息 Process exited with return code 152 可能会在某些情况下出现。

这些消息可能会在以下情况下出现:

  • 将 ALARMPROGRAM 配置参数设置为 log_full.sh 时。

    事件将定期使 log_full.sh 触发 onbar -b -l 命令。 如果在运行 onbar -b -l 命令时某个日志填满,那么 onbar 还将备份该日志。如果直到下个事件触发时为止备份还未完成,将在 bar_act.log 文件中生成一个警告。下个事件触发时,日志备份可以继续进行。

  • 自动启动 onbar -b -l 命令时。

    0 级归档(特别是使用 -w 选项启动时)将首先归档数据库,接着自动启动 onbar -b -l 命令来备份当前已填满但还未备份的所有逻辑日志。在 online.log 中可能没有 log_full.sh 消息,这是因为 onbar -b -l 命令是直接启动的。

  • 当前一个磁带填满后安装新磁带时,将调度 log_full.sh 事件但不触发该事件。

    一旦下个日志填满并在 log_full.sh 文件中生成事件触发器时,将归档所有可用日志。

    以通过运行 onbar -b -l 来强制执行归档,或通过运行 onmode -l 强制触发 log_full.sh。

恢复期间没有服务器连接

使用 onbar 进行整个系统恢复期间,bar_act.log 文件中可能出现错误 archive api error: no server connection。接着 onbar 成功连接到存储管理器,但最终失败,错误为 archive api error: not yet open。如果收到这些消息,可以执行相应步骤来解决问题。

bar_act.log 文件中包含与以下消息相似的信息:

2000-03-09 10\:51\:06 19304  19303 /usr/gbasedbt/bin/onbar_d -r -w
2000-03-09 10\:51\:09 19304 19303 错误:无法启动物理恢复:
归档 API 错误:无服务器连接。
2000-03-09 10\:51\:09 19304 19303 与存储管理器连接成功。
2000-03-09 10\:51\:36 19304 19303 进程 19304 收到信号 3。进程将
在清除后退出。
2000-03-09 10\:59\:13 19811 19810 /usr/gbasedbt/bin/onbar_d -r -w
2000-03-09 10\:59\:16 19811 19810 错误:无法启动物理恢复:
归档 API 错误:无服务器连接。
2000-03-09 10\:59\:16 19811 19810 与存储管理器连接成功。
2000-03-09 11\:01\:12 19811 19810 开始对 llog1 的 0 级冷恢复。
2000-03-09 11\:01\:12 19811 19810 错误:无法将恢复数据写入数据库服务器:
归档 API 错误:尚未打开。

要解决该问题,请检查数据库服务器是否还在运行。如果还在运行,那么关闭数据库服务器并再次运行该命令。

恢复之前删除数据库

如果使用 onbar 和存储管理器执行 0 级归档,接着删除数据库并随后使用 onbar -r 命令执行恢复,那么数据库将仍然处于已删除的状态。恢复将回收日志并且日志包含 DROP DATABASE 语句。回收或重放日志时,将删除数据库。如果收到这些消息,可以执行相应步骤来解决问题。

要防止这种情况的发生,请使用 onbar -r -p 命令执行物理恢复,接着使用 onbar -r -l 命令执行逻辑恢复。该操作序列不回收日志却可以恢复数据库。

备份或恢复期间没有数据库空间或 Blob 空间

用 onbar -r 或 onbar -r -w 命令启动恢复期间,如果紧急引导文件 ixbar.servernum 没有备份中对象的正确条目,There are no DB/BLOBspaces to backup/restore 消息将出现在 bar_act.log 文件中。

该错误可能在以下情况中出现:

  • 在外部恢复中,如果未从源系统中复制紧急引导文件。
  • 如果归档备份完成后重新创建了紧急引导文件。先前的文件以格式 ixbar.xx.xxxx 保存。
  • 试图对不是整个系统备份的备份执行 onbar -r -w 命令。

恢复 Blob 空间 BLOB

您可以使用表级别恢复来恢复存储在表中的 BLOB。但不能恢复存储在 blob 空间中的 BLOB。如果尝试恢复 blob 空间 BLOB,那么该列将被设置为 NULL。

在备份系统上更改系统时间

在某些情况下,如果系统时间有问题,onbar 会失败,并出现以下消息:There are no storage spaces or logical logs to backup or restore。如果发生此情况,可以执行相应步骤来解决问题。

时间线使用 UNIX™ 时间作为数据库空间的归档检查点时间和逻辑日志的结束时间。如果没有自动备份日志并且更改了系统时钟,那么可能会破坏时间线。

例如,如果在归档检查点时间前结束了逻辑日志记录,就会有一个高于归档检查点时间的时间戳记。数据库空间不需要日志,并且 onbar 将尝试立即恢复备份。如果找不到日志,那么 onbar 失败,并出现以下消息:There are no storage spaces or logical logs to backup or restore.

要存储存储空间和逻辑日志:

  1. 将时钟改回其原有值。
  2. 从备份恢复系统。
  3. 将时钟更改成新的时间。

迁移数据、服务器和工具

数据库服务器或存储管理器升级之前进行备份

升级到新版本的数据库服务器前,必须执行完整备份。

重要

当您把数据库服务器升级到最新版本时,数据库服务器转换软件将自动重新创建 sysutils 数据库。旧版本数据库服务器的所有备份与恢复信息都将丢失。在较旧版本的数据库服务器下进行的备份与新版本的数据库服务器不兼容。

要准备进行升级:

  1. 在升级数据库服务器、Storage Manager 或更改存储管理器之前,请先使用 onbar 对所有数据执行 0 级备份。
  2. 保存这些备份,万一需要还原到旧数据库服务器版本时,您可以恢复数据。
  3. 升级前请备份管理文件。
  4. 升级数据库服务器后,备份所有存储空间和逻辑日志。

如果更改存储管理器供应商,那么在确认新存储管理器对备份与恢复操作均适用之前,请不要除去旧存储管理器。

升级第三方存储管理器

如果升级第三方存储管理器供应商,那么在确认新存储管理器对备份与恢复操作均适用之前,请不要除去旧存储管理器。

先决条件:升级之前,执行数据库服务器的完整备份。

要将第三方存储管理器的新版本与数据库服务器一起使用:

  1. 先安装新存储管理器,再启动数据库服务器。
  2. 使用新的存储管理器定义更新 sm_versions 文件。

确认新存储管理器正确运行,再将其用于生产环境:

  • 确保存储管理器可以找到 onbar 请求的对象。
  • 确保新的存储管理器版本能够读取使用旧版本写入的介质。

如果在数据库服务器上设置了连续逻辑日志备份,那么 onbar 将在数据库服务器联机后不久开始备份逻辑日志。

使用 onsmsync 实用程序可以让 sysutils 数据库和紧急引导文件中旧的备份历史记录到期。

更改存储管理器供应商

如果更改存储管理器供应商,那么在有证据表明新存储管理器对备份与恢复操作均适用之前,请不要除去旧存储管理器。您可以使用旧存储管理器作为备份存储管理器,以在新存储管理器无法满足您的需要时进行使用。

onbar 支持同时使用多个存储管理器。要设置为测试一个存储管理器并将另一个作为备份存储管理器,请在 BAR_BSALIB_PATH 配置参数中以及 $GBASEDBTDIR/etc/sm_versions 文件中指定这两个存储管理器的信息。

如果无法同时使用新旧存储管理器,请使用 onbar 和 GBase 8s 主存储管理器Storage Manager 或 ontape 作为在检查备份和恢复操作是否能正确用于新存储管理器时的备份的备用方法。仅当您确认新存储管理器能够正确工作后,才将所有备份作为整个系统的 0 级备份来执行 (onbar -b-L 0 -w)。

如果更改物理连接(例如,将存储设备从本地连接移动到网络服务器),请确保新存储管理器可以在网络中移动数据。另请确保新存储管理器可以向存储设备发送多个数据流。它也可以使用不同版本的 XBSA。

从 ontape 切换到 onbar

不能使用 ontape 备份数据并使用 onbar 恢复这些数据,反之亦然,因为数据存储格式和备份能力是不同的。但是,您可以使用 ontape 备份数据,准备使用 onbar,然后使用 onbar 备份。

要从 ontape 切换到 onbar:

  1. 使用 ontape 执行完全备份。

  2. 让备份介质处于脱机状态,以防止可能的重用或擦除。

  3. 将存储管理器配置为与 onbar 一起使用。

  4. 配置环境:

    a. 设置用于 onbar 和存储管理器的配置参数。

    b. 使用存储管理器定义创建 sm_versions 文件。 如果使用 GBase 8s 主存储管理器 以外的存储管理器,请使用存储管理器定义创建 sm_versions 文件。GBase 8s 主存储管理器 不使用 sm_versions.std 文件。

  5. 使用 onbar(onbar -b 或 onbar -b -w)执行完全备份。

  6. 使用 onbar -v 命令验证备份。

GLS 支持

本附录包含有关将 Global Language Support (GLS) 与 onbar 一起使用的信息。

将 GLS 与 onbar 实用程序一起使用

onbar 实用程序支持 Global Language Support (GLS),它允许用户使用其母语工作。客户机应用程序使用的语言称为客户机语言环境。数据库为特定于其服务器的文件使用的语言称为服务器语言环境。

onbar 必须与数据库服务器在同一台计算机上运行。不过,您可以在任何具有支持消息和本地化文件的语言环境中运行 onbar。例如:如果服务器语言环境是英语而客户机语言环境是法语,那么可以用法语发出 onbar 命令。

以下命令为文件 tomb 中指定的数据库空间执行 0 级备份: onbar -b -L 0 -f tomb

sysutils 数据库、紧急引导文件和存储管理器引导文件是在 en_us.8859-1(缺省为英语)语言环境中创建的。sysutils 数据库中的 onbar 目录表使用的是英语。尝试使用 DB-Access 或第三方实用程序连接到 sysutils 数据库前,请先将客户机和数据库语言环境更改为 en_us.8859-1。

支持非 ASCII 字符的标识

您可以将非 ASCII 字符用于 onbar 和 ondblog 命令中的数据库名称和文件名,以及用于 onconfig 文件中的文件名。

GBase 8s GLS 用户指南 描述了支持非 ASCII 字符的 SQL 标识。非 ASCII 字符同时包括 8 位和多字节字符。

例如,您可以为 onbar 活动登录 BAR_ACT_LOG 指定非 ASCII 文件名,并为 BAR_BSALIB_PATH 中的存储管理器库指定非 ASCII 路径名。

需要 7 位 ASCII 字符的标识

对于存储空间名称和数据库服务器名称,必须使用 7 位 ASCII 字符。

onbar 消息的语言环境

除了数据库服务器发出的消息以外,其他所有 onbar 消息都以客户机语言环境出现在活动日志中。

例如:表明数据库服务器出错的部分消息以客户机语言环境显示,服务器生成的部分以服务器语言环境显示。

将 GL_DATETIME 环境变量与 onbar 一起使用

当客户机应用程序发送日期或时间数据时,数据库服务器必须知道如何解释和转换这种以日期或时间数据显示的最终用户格式。您可以使用 GL_DATE 和 GL_DATETIME 环境变量来指定可以替换的日期和时间格式。

如果没有设置这些环境变量,onbar 将使用客户机语言环境的日期和时间格式。

如果执行时间点恢复,请按照 GL_DATETIME 环境变量(如果已设置)指定的格式输入日期和时间。

将 GLS 与 ontape 实用程序一起使用

ontape 实用程序与 onbar 一样支持 GLS。您可以指定本地语言环境的数据库名称。